<?php
/**
 * pdo链接数据库
 */

//以多种方式调用构造方法 实现数据库的链接

//1、将参数嵌入到构造函数中

$dsn='mysql:dbname=test;host=127.0.0.1';
$user='root';
$password='';

//$opt=array(PDO::ATTR_PERSISTENT=>true);
try{
	//传入链接第四个参数设置持久链接
	$link=new PDO($dsn,$user,$password);
	var_dump($link);
}catch(PDOException $e){
	echo '数据库链接失败'.$e->getMessage();
	exit;
}

//调用pdo行为属性
echo "\nPDO是否关闭自动提交功能:".$link->getAttribute(PDO::ATTR_AUTOCOMMIT);//1代表开启
echo '<br>';
echo "\n当前PDO错误处理模式:".$link->getAttribute(PDO::ATTR_ERRMODE).'<br>';//0代表默认不报错
echo "\n表字段大小写转换:".$link->getAttribute(PDO::ATTR_CASE).'<br>';
echo "\n与连接状态相关的特有信息:".$link->getAttribute(PDO::ATTR_CONNECTION_STATUS).'<br>';
echo "\n空字符串转换为SQL的null:".$link->getAttribute(PDO::ATTR_ORACLE_NULLS).'<br>';
echo "\n应用程序提前获取的数据大小:".$link->getAttribute(PDO::ATTR_PERSISTENT).'<br>';
echo "\n数据库特有的服务器信息:".$link->getAttribute(PDO::ATTR_SERVER_INFO).'<br>';
echo "\n数据库服务器版本号信息".$link->getAttribute(PDO::ATTR_SERVER_VERSION).'<br>';
echo "\n数据库客户端版本号信息".$link->getAttribute(PDO::ATTR_CLIENT_VERSION);

//设置pdo错误模式为抛出异常
$link->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//输出pdo错误模式
echo '<br>';
echo $link->getAttribute(PDO::ATTR_ERRMODE);

//设置在获取时把空字符串转换为null
$link->setAttribute(PDO::ATTR_ORACLE_NULLS,true);
//输出空字符串转换为SQL的null的设置
echo '<br>';
echo $link->getAttribute(PDO::ATTR_ORACLE_NULLS);



//2、将参数放到文件中
// try{
// 	$pdo=new PDO('uri:file:./db.php','root','');
// }catch(PDOException $e){
// 	echo '数据库链接失败'.$e->getMessage();
// }

//3、引用php.ini文件

// 在php.ini文件中做如下配置 然后重启服务器
/*[PDO]
  pdo.dsn.mysqlpdo="mysql:dbname=//localhost:3306/test;charset=utf-8";
*/

/*try{
	//使用php.ini文件中的mysql别名
	$dsn=new PDO("mysqlpdo",'root','');
}catch(PDOException $e){
	echo '数据库链接失败'.$e->getMessage();
}*/
